﻿namespace Lilium.LParse

type FutureParser<'symbol, 'witness> =
    abstract member Parse<'result> : 
        (State<'symbol> -> Step<'result>)
        -> State<'symbol>
        -> Step<'witness * 'result>

module FutureParser =

    open Lilium.LParse.Prelude

    let satisfy p = 
        { new FutureParser<'symbol, 'symbol> with 
            member x.Parse cont state = 
                
                undefined ()
                
                //match state.Split p with
                //| Some (symbol, newState) -> Step (cont newState history symbol)
                //| None -> Fail 
                }